from PublicReference.base import *


class 技能0(被动技能):
    名称 = '机械原理'
    所在等级 = 15
    等级上限 = 11
    基础等级 = 1

    def 加成倍率(self, 武器类型):
        if self.等级 == 0:
            return 1.0
        else:
            return round(1.085+0.015*self.等级, 5)


class 技能1(主动技能):
    名称 = 'G1科罗纳'
    备注 = '(秒伤)'
    所在等级 = 20
    等级上限 = 60
    基础等级 = 43
    数据 = [int(i*1.0) for i in [0, 555, 620, 675, 730, 785, 845, 900, 960, 1015, 1075, 1135, 1190, 1250, 1305, 1365, 1420, 1475, 1530, 1590, 1645, 1710, 1770, 1825, 1880, 1935, 1995, 2050, 2110, 2165, 2225, 2285, 2340, 2400,
                               2455, 2515, 2570, 2625, 2680, 2745, 2805, 2860, 2920, 2975, 3030, 3085, 3145, 3200, 3265, 3320, 3375, 3435, 3490, 3550, 3605, 3665, 3720, 3780, 3835, 3895, 3955, 4010, 4070, 4125, 4180, 4235, 4300, 4355, 4415, 4475, 4525]]
    CD = 1.0
    TP成长 = 0.10
    TP上限 = 5

    def 等效CD(self, 武器类型, 输出类型):
        return round(1, 1)

    def G系加成倍率(self):
        if self.等级 == 0:
            return 0.0
        else:
            return round(0.59+0.01*self.等级, 5)

    def 等效百分比(self, 武器类型):
        return self.数据[self.等级] * (1 + self.TP成长 * self.TP等级) * self.倍率


class 技能2(主动技能):
    名称 = 'G2旋雷者'
    所在等级 = 25
    等级上限 = 60
    基础等级 = 41
    数据 = [int(i*1.121) for i in [0, 497, 548, 599, 649, 700, 750, 801, 851, 902, 952, 1003, 1053, 1104, 1155, 1205, 1255, 1305, 1356, 1406, 1457, 1507, 1558, 1608, 1659, 1709, 1760, 1811, 1861, 1912, 1962, 2013, 2063, 2114,
                                 2164, 2215, 2265, 2315, 2366, 2416, 2467, 2517, 2568, 2618, 2669, 2719, 2770, 2820, 2871, 2922, 2972, 3023, 3073, 3124, 3174, 3225, 3275, 3325, 3375, 3426, 3477, 3527, 3578, 3628, 3679, 3729, 3780, 3830, 3881, 3932, 3982]]
    攻击次数 = 4
    CD = 6.0
    TP成长 = 0.10
    TP上限 = 5

    def 等效CD(self, 武器类型, 输出类型):
        return round(6, 1)

    def G系加成倍率(self):
        if self.等级 == 0:
            return 0.0
        else:
            return round(0.50+0.01*self.等级, 5)

    def 等效百分比(self, 武器类型):
        return self.数据[self.等级] * self.攻击次数 * (1 + self.TP成长 * self.TP等级) * self.倍率


class 技能3(主动技能):
    名称 = '毒蛇炮'
    所在等级 = 25
    等级上限 = 60
    基础等级 = 41
    数据1 = [int(i*1.25) for i in [0, 1920, 2130, 2340, 2520, 2730, 2910, 3120, 3300, 3510, 3720, 3900, 4110, 4290, 4500, 4710, 4890, 5100, 5280, 5460, 5670, 5880, 6090, 6270, 6480, 6660, 6870, 7050, 7260, 7470, 7650, 7860, 8040, 8250, 8430, 8640,
                                 8850, 9030, 9240, 9420, 9630, 9810, 10020, 10230, 10410, 10590, 10800, 11010, 11220, 11400, 11610, 11790, 11970, 12180, 12390, 12600, 12780, 12990, 13170, 13380, 13560, 13770, 13980, 14160, 14370, 14550, 14760, 14940, 15150, 15360, 15540]]
    攻击次数1 = 1
    数据2 = [int(i*1.0) for i in [0, 486, 535, 585, 633, 683, 732, 781, 831, 880, 929, 979, 1028, 1077, 1127, 1176, 1225, 1275, 1324, 1373, 1423, 1472, 1521, 1571, 1620, 1669, 1718, 1767, 1817, 1866, 1916, 1965, 2014, 2064, 2113,
                                2162, 2212, 2261, 2310, 2360, 2409, 2458, 2508, 2557, 2606, 2656, 2704, 2754, 2803, 2852, 2902, 2951, 3000, 3050, 3099, 3148, 3198, 3247, 3296, 3346, 3395, 3444, 3494, 3543, 3592, 3642, 3691, 3740, 3789, 3838, 3888]]
    攻击次数2 = 0
    CD = 2.975
    TP成长 = 0.10
    TP上限 = 5

    def 等效百分比(self, 武器类型):
        return (self.数据1[self.等级] * self.攻击次数1 + self.数据2[self.等级] * self.攻击次数2) * (1 + self.TP成长 * self.TP等级) * self.倍率


class 技能4(被动技能):
    名称 = '电能转换'
    所在等级 = 25
    等级上限 = 20
    基础等级 = 10
    # 是否加成三觉的两个技能到时候自己加
    关联技能 = ['毒蛇炮', '自爆狂风', '空战机械：狂风', '空投支援', '拦截机工厂', '光反应能量模块', 'G0战争领主', 'HS12等离子体', 'G4雷行者', 'GSP猎鹰科罗纳形态',
            'GSP猎鹰旋雷者形态', 'GSP猎鹰捕食者形态', '高压电磁场', '终结者：博尔特MX', '超时空光耀加农炮', 'G-X 星尘天穹', '空中射击', 'RX-78追击者', 'Ez-8自爆者']

    def 加成倍率(self, 武器类型):
        if self.等级 == 0:
            return 1.0
        else:
            return round(1.10+0.02*self.等级, 5)


class 技能5(主动技能):
    名称 = 'G3捕食者'
    备注 = '(秒伤)'
    所在等级 = 30
    等级上限 = 60
    基础等级 = 38
    数据 = [int(i*1.0) for i in [0, 800, 880, 960, 1040, 1120, 1208, 1288, 1368, 1448, 1528, 1608, 1688, 1776, 1856, 1936, 2016, 2096, 2176, 2264, 2344, 2424, 2504, 2584, 2664, 2744, 2832, 2912, 2992, 3072, 3152, 3232, 3312, 3400,
                               3480, 3560, 3640, 3720, 3800, 3880, 3960, 4040, 4120, 4200, 4280, 4360, 4440, 4528, 4608, 4688, 4768, 4848, 4928, 5016, 5096, 5176, 5256, 5336, 5416, 5496, 5584, 5664, 5744, 5824, 5904, 5984, 6064, 6152, 6232, 6312, 6392]]
    CD = 1
    TP成长 = 0.10
    TP上限 = 5

    def 等效CD(self, 武器类型, 输出类型):
        return round(1, 1)

    def G系加成倍率(self):
        if self.等级 == 0:
            return 0.0
        else:
            return round(0.50+0.017*self.等级, 5)

    def 等效百分比(self, 武器类型):
        return self.数据[self.等级] * (1 + self.TP成长 * self.TP等级) * self.倍率


class 技能6(主动技能):
    名称 = 'G1磁力弹'
    所在等级 = 30
    等级上限 = 70
    基础等级 = 43
    CD = 12.75


class 技能7(主动技能):
    名称 = '自爆狂风'
    备注 = '(自爆伤害)'
    所在等级 = 35
    等级上限 = 60
    基础等级 = 36
    数据 = [int(i*1.0) for i in [0, 2202, 2425, 2649, 2872, 3095, 3319, 3543, 3766, 3989, 4213, 4436, 4660, 4883, 5106, 5330, 5554, 5777, 6000, 6224, 6447, 6671, 6894, 7117, 7341, 7565, 7788, 8011, 8235, 8458, 8682, 8905, 9128, 9352, 9575, 9799, 10022,
                               10245, 10469, 10693, 10915, 11139, 11363, 11586, 11810, 12033, 12256, 12480, 12704, 12926, 13150, 13374, 13597, 13821, 14044, 14267, 14491, 14715, 14937, 15161, 15385, 15608, 15831, 16055, 16278, 16502, 16725, 16948, 17172, 17395, 17619]]
    CD = 25.5
    TP成长 = 0.10
    TP上限 = 5
    是否有护石 = 1
    演出时间 = 1.4

    护石选项 = ['魔界', '圣痕']

    def 装备护石(self, x):
        if x == 0:
            self.倍率 *= 8.79

        elif x == 1:
            self.倍率 *= 9.24

    def 等效百分比(self, 武器类型):
        return self.数据[self.等级] * (1 + self.TP成长 * self.TP等级) * self.倍率


class 技能8(主动技能):
    名称 = '空战机械：狂风'
    备注 = '(机枪捣蛋模式, 秒伤)'
    所在等级 = 35
    等级上限 = 60
    基础等级 = 36
    数据1 = [int(i*1.0) for i in [0, 204, 225, 245, 266, 287, 307, 328, 348, 369, 390, 411, 431, 452, 473, 493, 514, 535, 555, 576, 597, 618, 638, 659, 680, 700, 721, 742, 762, 783, 804, 825, 845, 866, 886, 907,
                                928, 948, 969, 990, 1011, 1031, 1052, 1073, 1093, 1114, 1135, 1155, 1176, 1197, 1218, 1238, 1259, 1280, 1300, 1321, 1342, 1362, 1383, 1404, 1424, 1445, 1466, 1486, 1507, 1528, 1548, 1569, 1590, 1611, 1631]]
    攻击次数1 = 3
    数据2 = [int(i*1.0) for i in [0, 92, 101, 110, 119, 129, 138, 148, 157, 166, 175, 185, 194, 203, 213, 222, 231, 241, 250, 259, 268, 278, 287, 296, 306, 315, 324, 334, 343, 352, 362, 371, 380,
                                389, 399, 408, 418, 427, 436, 445, 455, 464, 473, 483, 492, 501, 511, 520, 529, 538, 548, 557, 566, 576, 585, 594, 604, 613, 622, 632, 641, 650, 659, 669, 678, 688, 697, 706, 715, 725, 734]]
    攻击次数2 = 6
    CD = 1.0
    TP成长 = 0.10
    TP上限 = 5

    def 等效CD(self, 武器类型, 输出类型):
        return round(1, 1)

    def 等效百分比(self, 武器类型):
        return (self.数据1[self.等级] * self.攻击次数1 * 3/3.352 + self.数据2[self.等级] * self.攻击次数2 * 3/3.523) * (1 + self.TP成长 * self.TP等级) * self.倍率


class 技能9(主动技能):
    名称 = '空投支援'
    所在等级 = 40
    等级上限 = 60
    基础等级 = 33
    数据 = [int(i*1.104) for i in [0, 826, 910, 995, 1078, 1162, 1246, 1330, 1414, 1498, 1582, 1665, 1749, 1834, 1917, 2001, 2085, 2169, 2253, 2336, 2421, 2505, 2588, 2673, 2756, 2840, 2924, 3008, 3092, 3175, 3260, 3344, 3427, 3511,
                                 3595, 3679, 3763, 3847, 3931, 4015, 4098, 4183, 4266, 4350, 4435, 4518, 4602, 4685, 4770, 4854, 4937, 5022, 5105, 5189, 5273, 5357, 5441, 5525, 5609, 5693, 5776, 5860, 5945, 6028, 6112, 6196, 6280, 6364, 6447, 6532, 6615]]
    攻击次数 = 20
    CD = 34.0
    TP成长 = 0.10
    TP上限 = 5
    是否有护石 = 1
    演出时间 = 3.5

    护石选项 = ['魔界', '圣痕']

    def 装备护石(self, x):
        if x == 0:
            self.倍率 *= 1.242
            self.CD *= 0.9
        elif x == 1:
            self.倍率 *= 1.334
            self.CD *= 0.9

    def 等效百分比(self, 武器类型):
        return self.数据[self.等级] * self.攻击次数 * (1 + self.TP成长 * self.TP等级) * self.倍率


class 技能10(主动技能):
    名称 = '拦截机工厂'
    所在等级 = 45
    等级上限 = 60
    基础等级 = 31
    数据1 = [int(i*1.12) for i in [0, 143, 157, 172, 186, 201, 215, 230, 245, 260, 275, 289, 304, 318, 333, 347, 362, 376, 391, 405, 420, 435, 449, 464, 478, 493, 507, 522, 536, 551, 565, 580, 595, 609, 624,
                                 638, 653, 667, 682, 696, 711, 725, 740, 755, 769, 784, 798, 813, 827, 842, 856, 871, 885, 900, 915, 929, 944, 958, 973, 987, 1002, 1016, 1031, 1045, 1061, 1075, 1090, 1105, 1119, 1134, 1148.18]]
    攻击次数1 = 110
    数据2 = [int(i*1.12) for i in [0, 1076, 1185, 1295, 1404, 1513, 1622, 1732, 1841, 1950, 2059, 2168, 2277, 2386, 2495, 2605, 2715, 2824, 2933, 3042, 3151, 3260, 3370, 3479, 3588, 3697, 3806, 3915, 4025, 4135, 4244, 4353, 4462, 4571,
                                 4680, 4789, 4898, 5008, 5117, 5226, 5335, 5445, 5554, 5663, 5773, 5882, 5991, 6100, 6209, 6318, 6427, 6537, 6646, 6755, 6865, 6974, 7083, 7192, 7301, 7411, 7520, 7629, 7738, 7847, 7956, 8065, 8175, 8285, 8394, 8503, 8611.82]]
    攻击次数2 = 6
    数据3 = [int(i*1.0) for i in [0, 1384, 1525, 1665, 1805, 1945, 2085, 2226, 2366, 2507, 2647, 2788, 2928, 3069, 3209, 3350, 3490, 3630, 3771, 3911, 4052, 4192, 4333, 4473, 4614, 4754, 4895, 5035, 5175, 5315, 5455, 5596, 5736, 5877, 6017,
                                6158, 6298, 6439, 6579, 6720, 6860, 7000, 7141, 7281, 7422, 7562, 7703, 7843, 7984, 8124, 8265, 8405, 8545, 8685, 8825, 8966, 9106, 9247, 9387, 9528, 9668, 9809, 9949, 10090, 10230, 10371, 10511, 10651, 10792, 10932, 11072.73]]
    攻击次数3 = 0
    CD = 38.25
    TP成长 = 0.10
    TP上限 = 5
    是否有护石 = 1
    演出时间 = 4.9

    护石选项 = ['魔界', '圣痕']

    def 装备护石(self, x):
        if x == 0:
            self.倍率 *= 1.17
            self.攻击次数1 = 120

        elif x == 1:
            self.倍率 *= 1.25
            self.攻击次数1 = 120

    def 等效百分比(self, 武器类型):
        return (self.数据1[self.等级] * self.攻击次数1 + self.数据2[self.等级] * self.攻击次数2 + self.数据3[self.等级] * self.攻击次数3) * (1 + self.TP成长 * self.TP等级) * self.倍率


class 技能11(主动技能):
    名称 = '光反应能量模块'
    备注 = '(拦截机工厂一击形态)'
    所在等级 = 45
    等级上限 = 60
    基础等级 = 31
    数据 = [int(i*1.0882) for i in [0, 19454, 21427, 23401, 25375, 27348, 29322, 31295, 33269, 35243, 37216, 39190, 41164, 43137, 45111, 47085, 49058, 51032, 53005, 54979, 56953, 58926, 60900, 62874, 64847, 66821, 68795, 70768, 72742, 74715, 76689, 78663, 80636, 82610, 84584, 86557,
                                  88531, 90505, 92478, 94452, 96425, 98399, 100373, 102346, 104320, 106294, 108267, 110241, 112215, 114188, 116162, 118135, 120109, 122083, 124056, 126030, 128004, 129977, 131951, 133925, 135898, 137872, 139845, 141819, 143793, 145766, 147740, 149714, 151687, 153661, 155634.5]]
    CD = 38.25
    TP成长 = 0.10
    TP上限 = 5
    是否有护石 = 1
    演出时间 = 1.7

    护石选项 = ['魔界', '圣痕']

    def 装备护石(self, x):
        if x == 0:
            self.倍率 *= 1.14

        elif x == 1:
            self.倍率 *= 1.22

    def 等效百分比(self, 武器类型):
        return self.数据[self.等级] * self.攻击次数 * (1 + self.TP成长 * self.TP等级) * self.倍率


class 技能12(被动技能):
    名称 = 'G系扩张'
    所在等级 = 48
    等级上限 = 40
    基础等级 = 20

    def 加成倍率(self, 武器类型):
        if self.等级 == 0:
            return 1.0
        else:
            return round(1.025+0.02*self.等级, 5)


class 技能13(主动技能):
    名称 = 'G0战争领主'
    所在等级 = 50
    等级上限 = 40
    基础等级 = 12

    数据1 = [int(i*1.121) for i in [0, 481, 593, 705, 816, 928, 1040, 1152, 1264, 1375, 1487, 1598, 1710, 1822, 1934, 2045, 2157, 2269, 2381, 2493, 2605, 2715, 2827, 2939, 3051, 3163, 3275, 3386, 3498, 3610, 3721, 3833, 3945, 4056,
                                  4168, 4280, 4392, 4504, 4615, 4727, 4838, 4950, 5062, 5174, 5285, 5397, 5509, 5621, 5733, 5845, 5955, 6067, 6179, 6291, 6403, 6515, 6626, 6738, 6850, 6961, 7073, 7185, 7296, 7408, 7520, 7632, 7744, 7855, 7967, 8078, 8190]]
    攻击次数1 = 30
    数据2 = [int(i*1.121) for i in [0, 602, 742, 881, 1021, 1160, 1300, 1440, 1579, 1719, 1859, 1998, 2138, 2277, 2417, 2557, 2696, 2836, 2976, 3115, 3255, 3395, 3535, 3675, 3814, 3954, 4094, 4233, 4373, 4512, 4652, 4792, 4931, 5071,
                                  5210, 5350, 5490, 5629, 5769, 5909, 6048, 6188, 6327, 6467, 6607, 6746, 6886, 7026, 7165, 7305, 7445, 7585, 7725, 7864, 8004, 8144, 8283, 8423, 8562, 8702, 8842, 8981, 9121, 9260, 9400, 9540, 9679, 9819, 9959, 10098, 10238]]
    攻击次数2 = 24
    数据3 = [int(i*1.121) for i in [0, 2609, 3215, 3820, 4425, 5030, 5635, 6240, 6845, 7451, 8055, 8661, 9266, 9872, 10476, 11082, 11687, 12292, 12897, 13503, 14107, 14713, 15318, 15923, 16528, 17134, 17739, 18344, 18949, 19555, 20159, 20765, 21370, 21975, 22580,
                                  23185, 23790, 24395, 25001, 25605, 26211, 26816, 27422, 28026, 28632, 29237, 29842, 30447, 31053, 31657, 32263, 32868, 33473, 34078, 34684, 35289, 35894, 36499, 37105, 37709, 38315, 38920, 39525, 40130, 40735, 41340, 41945, 42551, 43155, 43761, 44366.36]]
    攻击次数3 = 12
    CD = 145.0
    一觉减CD = 0
    冷却关联技能 = ['所有']
    演出时间 = 7.1

    def 等效百分比(self, 武器类型):
        return (self.数据1[self.等级] * self.攻击次数1 + self.数据2[self.等级] * self.攻击次数2 + self.数据3[self.等级] * self.攻击次数3) * self.倍率

    def CD缩减倍率(self, 武器类型):
        return round(1 - self.一觉减CD, 3)


class 技能14(主动技能):
    名称 = 'HS12等离子体'
    所在等级 = 60
    等级上限 = 40
    基础等级 = 23
    数据 = [int(i*1.0651) for i in [0, 16855, 18565, 20275, 21985, 23695, 25405, 27115, 28825, 30535, 32245, 33955, 35665, 37375, 39085, 40795, 42505, 44215, 45925, 47635, 49345, 51055, 52765,
                                  54475, 56185, 57895, 59605, 61315, 63025, 64735, 66445, 68155, 69865, 71575, 73285, 74995, 76705, 78415, 80125, 81835, 83545, 85255, 86965, 88675, 90385, 92095, 93805, 95515, 97225, 98935]]
    CD = 25.5
    TP成长 = 0.10
    TP上限 = 5
    是否有护石 = 1
    演出时间 = 0.9

    护石选项 = ['魔界', '圣痕']

    def 装备护石(self, x):
        if x == 0:
            self.倍率 *= 1.12

        elif x == 1:
            self.倍率 *= 1.21

    def 等效百分比(self, 武器类型):
        return self.数据[self.等级] * (1 + self.TP成长 * self.TP等级) * self.倍率


class 技能15(主动技能):
    名称 = 'G4雷行者'
    所在等级 = 70
    等级上限 = 40
    基础等级 = 18
    数据1 = [int(i*1.102) for i in [0, 492, 542, 592, 641, 691, 741, 791, 841, 891, 941, 991, 1041, 1091, 1140, 1190, 1240, 1290, 1340, 1390, 1440, 1490, 1540, 1590, 1640, 1689, 1739, 1789, 1839, 1889, 1939, 1989, 2039, 2089,
                                  2139, 2189, 2238, 2288, 2338, 2388, 2438, 2488, 2538, 2588, 2638, 2688, 2737, 2787, 2837, 2887, 2937, 2987, 3037, 3087, 3137, 3187, 3237, 3286, 3336, 3386, 3436, 3486, 3536, 3586, 3636, 3686, 3736, 3786, 3835, 3885, 3935]]
    攻击次数1 = 48
    数据2 = [int(i*1.102) for i in [0, 1014, 1117, 1220, 1323, 1425, 1529, 1632, 1735, 1837, 1940, 2044, 2146, 2249, 2352, 2455, 2558, 2661, 2764, 2866, 2970, 3073, 3175, 3278, 3381, 3485, 3587, 3690, 3793, 3896, 3999, 4102, 4205, 4307,
                                  4411, 4514, 4616, 4719, 4823, 4925, 5028, 5131, 5234, 5337, 5440, 5543, 5645, 5748, 5852, 5955, 6057, 6160, 6264, 6366, 6469, 6572, 6675, 6778, 6881, 6984, 7086, 7190, 7293, 7395, 7498, 7601, 7705, 7807, 7910, 8013, 8115]]
    攻击次数2 = 3
    CD = 38.25
    TP成长 = 0.10
    TP上限 = 5
    是否有护石 = 1
    演出时间 = 7.3

    护石选项 = ['魔界', '圣痕']

    def 装备护石(self, x):
        if x == 0:
            self.倍率 *= 1.12
            self.CD *= 0.9

        elif x == 1:
            self.倍率 *= 1.20
            self.CD *= 0.9

    def 等效百分比(self, 武器类型):
        return (self.数据1[self.等级] * self.攻击次数1 + self.数据2[self.等级] * self.攻击次数2) * (1 + self.TP成长 * self.TP等级) * self.倍率


class 技能16(被动技能):
    名称 = 'GX主宰者'
    所在等级 = 75
    等级上限 = 40
    基础等级 = 11

    def 加成倍率(self, 武器类型):
        if self.等级 == 0:
            return 1.0
        if self.等级 in [1, 2]:
            return round(1.08+0.02*self.等级, 5)
        if self.等级 == 3:
            return round(1.15, 5)
        if self.等级 == 4:
            return round(1.20, 5)
        if self.等级 >= 5:
            return round(1.12+0.02*self.等级, 5)


class 技能17(主动技能):
    名称 = 'GSP猎鹰科罗纳形态'
    备注 = '(GSP猎鹰)'
    所在等级 = 75
    等级上限 = 40
    基础等级 = 16
    数据 = [int(i*1.11249) for i in [0, 15601, 17184, 18766, 20349, 21932, 23515, 25097, 26680, 28263, 29845, 31428, 33011, 34594, 36176, 37759, 39342, 40925, 42507, 44090, 45673, 47255, 48838, 50421, 52004, 53586, 55169, 56752, 58335, 59917, 61500, 63083, 64665, 66248, 67831,
                                   69414, 70996, 72579, 74162, 75745, 77327, 78910, 80493, 82075, 83658, 85241, 86824, 88406, 89989, 91572, 93155, 94737, 96320, 97903, 99485, 101068, 102651, 104234, 105816, 107399, 108982, 110565, 112147, 113730, 115313, 116895, 118478, 120061, 121644, 123226, 124809]]
    CD = 12.75
    基础释放次数 = 2
    演出时间 = 1.3
    是否有护石 = 1
    护石选项 = ['圣痕']

    def 装备护石(self, x):
        if x == 0:
            self.倍率 *= 1.35
            self.CD *= 0.9

    def 等效CD(self, 武器类型, 输出类型):
        return round(self.CD, 1)

    def 等效百分比(self, 武器类型):
        return self.数据[self.等级] * self.倍率


class 技能18(主动技能):
    名称 = 'GSP猎鹰旋雷者形态'
    备注 = '(GSP猎鹰)'
    所在等级 = 75
    等级上限 = 40
    基础等级 = 16
    数据 = [int(i*1.0855) for i in [0, 5331, 5872, 6413, 6954, 7495, 8035, 8576, 9117, 9658, 10199, 10740, 11281, 11822, 12363, 12904, 13445, 13985, 14526, 15067, 15608, 16148, 16689, 17230, 17771, 18312, 18853, 19394, 19935, 20475, 21016, 21557, 22098, 22639, 23180,
                                  23721, 24262, 24803, 25344, 25885, 26425, 26966, 27507, 28048, 28589, 29130, 29671, 30212, 30753, 31294, 31835, 32375, 32915, 33456, 33997, 34538, 35079, 35620, 36161, 36702, 37243, 37784, 38325, 38865, 39406, 39947, 40488, 41029, 41570, 42111, 42652]]
    攻击次数 = 3
    CD = 12.75
    基础释放次数 = 2
    演出时间 = 1.6
    是否有护石 = 1
    护石选项 = ['圣痕']

    def 装备护石(self, x):
        if x == 0:
            self.倍率 *= 1.34
            self.CD *= 0.9

    def 等效CD(self, 武器类型, 输出类型):
        return round(self.CD, 1)

    def 等效百分比(self, 武器类型):
        return self.数据[self.等级] * self.攻击次数 * self.倍率


class 技能19(主动技能):
    名称 = 'GSP猎鹰捕食者形态'
    备注 = '(GSP猎鹰)'
    所在等级 = 75
    等级上限 = 40
    基础等级 = 16
    数据 = [int(i*1.102) for i in [0, 676, 745, 814, 882, 951, 1019, 1087, 1156, 1225, 1294, 1362, 1431, 1499, 1568, 1636, 1705, 1774, 1843, 1911, 1980, 2048, 2117, 2185, 2255, 2323, 2392, 2460, 2529, 2597, 2666, 2735, 2804, 2872,
                                 2941, 3009, 3078, 3146, 3215, 3284, 3353, 3421, 3489, 3558, 3626, 3695, 3764, 3833, 3901, 3970, 4038, 4107, 4175, 4245, 4313, 4382, 4450, 4519, 4587, 4656, 4725, 4794, 4862, 4931, 4999, 5068, 5136, 5205, 5274, 5343, 5411]]
    攻击次数 = 25
    CD = 12.75
    基础释放次数 = 2
    演出时间 = 2.8

    是否有护石 = 1
    护石选项 = ['圣痕']

    def 装备护石(self, x):
        if x == 0:
            self.倍率 *= 1.314
            self.CD *= 0.9

    def 等效CD(self, 武器类型, 输出类型):
        return round(self.CD, 1)

    def 等效百分比(self, 武器类型):
        return self.数据[self.等级] * self.攻击次数 * self.倍率


class 技能20(主动技能):
    名称 = '高压电磁场'
    所在等级 = 80
    等级上限 = 40
    基础等级 = 13
    数据 = [int(i*1.1010899) for i in [0, 3670, 4043, 4415, 4787, 5159, 5532, 5905, 6276, 6649, 7021, 7394, 7766, 8138, 8511, 8883, 9255, 9628, 10000, 10373, 10745, 11117, 11490, 11862, 12235, 12606, 12979, 13352, 13724, 14096, 14469, 14841, 15214, 15585, 15958,
                                     16331, 16703, 17075, 17447, 17820, 18193, 18565, 18937, 19309, 19682, 20055, 20426, 20799, 21171, 21544, 21916, 22288, 22661, 23033, 23405, 23778, 24150, 24523, 24895, 25267, 25640, 26012, 26385, 26756, 27129, 27502, 27874, 28246, 28618, 28991, 29364]]
    攻击次数 = 15
    CD = 42.5
    演出时间 = 3.5
    是否有护石 = 1
    护石选项 = ['圣痕']

    def 装备护石(self, x):
        if x == 0:
            self.倍率 *= 1.30
            self.CD *= 0.9

    def 等效百分比(self, 武器类型):
        return self.数据[self.等级] * self.攻击次数 * self.倍率


class 技能21(主动技能):
    名称 = '终结者：博尔特MX'
    所在等级 = 85
    等级上限 = 40
    基础等级 = 5

    数据1 = [int(i*1.128) for i in [0, 1664, 2050, 2436, 2822, 3208, 3594, 3980, 4365, 4752, 5138, 5524, 5910, 6295, 6682, 7067, 7454, 7839, 8225, 8612, 8997, 9384, 9769, 10155, 10541, 10927, 11314, 11699, 12085, 12471, 12857, 13243, 13629, 14015, 14401, 14787,
                                  15173, 15559, 15945, 16331, 16716, 17103, 17489, 17875, 18261, 18646, 19033, 19418, 19805, 20190, 20576, 20963, 21348, 21735, 22120, 22506, 22892, 23278, 23665, 24050, 24436, 24822, 25208, 25594, 25980, 26365, 26752, 27138, 27524, 27910, 28295]]
    攻击次数1 = 8
    数据2 = [int(i*1.128) for i in [0, 3631, 4474, 5315, 6157, 7000, 7842, 8684, 9526, 10368, 11210, 12052, 12895, 13736, 14578, 15421, 16263, 17105, 17947, 18789, 19631, 20474, 21315, 22157, 23000, 23842, 24684, 25526, 26368, 27210, 28053, 28895, 29736, 30579, 31421,
                                  32263, 33105, 33947, 34789, 35631, 36474, 37315, 38157, 39000, 39842, 40684, 41526, 42368, 43210, 44053, 44895, 45736, 46579, 47421, 48263, 49105, 49947, 50789, 51632, 52474, 53315, 54157, 55000, 55842, 56684, 57526, 58368, 59210, 60053, 60895, 61736]]
    攻击次数2 = 2
    数据3 = [int(i*1.128) for i in [0, 2126, 2618, 3112, 3604, 4097, 4589, 5083, 5579, 6073, 6565, 7058, 7550, 8044, 8535, 9029, 9522, 10015, 10509, 11001, 11495, 11986, 12480, 12972, 13465, 13958, 14451, 14947, 15439, 15933, 16426, 16919, 17413, 17905, 18398,
                                  18890, 19384, 19875, 20369, 20861, 21355, 21848, 22341, 22835, 23326, 23820, 24315, 24808, 25302, 25794, 26287, 26779, 27273, 27766, 28258, 28752, 29244, 29737, 30230, 30724, 31215, 31709, 32201, 32695, 33188, 33685, 34176, 34670, 35162, 35655, 36147]]
    攻击次数3 = 15
    数据4 = [int(i*1.128) for i in [0, 2623, 3231, 3839, 4447, 5055, 5664, 6272, 6880, 7488, 8096, 8705, 9313, 9921, 10529, 11137, 11745, 12354, 12962, 13570, 14178, 14786, 15395, 16003, 16611, 17219, 17827, 18435, 19044, 19652, 20260, 20868, 21476, 22085, 22693,
                                  23301, 23909, 24517, 25125, 25734, 26342, 26950, 27558, 28166, 28775, 29383, 29991, 30599, 31207, 31815, 32424, 33032, 33640, 34248, 34856, 35465, 36073, 36681, 37289, 37897, 38505, 39114, 39722, 40330, 40938, 41546, 42155, 42763, 43371, 43979, 44587]]
    攻击次数4 = 6
    数据5 = [int(i*1.128) for i in [0, 26631, 32806, 38982, 45157, 51333, 57508, 63684, 69860, 76035, 82211, 88386, 94562, 100737, 106913, 113088, 119264, 125439, 131615, 137790, 143965, 150141, 156316, 162492, 168667, 174843, 181018, 187194, 193369, 199545, 205720, 211895, 218071, 224246, 230422,
                                  236597, 242773, 248948, 255124, 261299, 267475, 273650, 279825, 286001, 292176, 298352, 304527, 310703, 316878, 323054, 329229, 335405, 341580, 347755, 353931, 360106, 366282, 372457, 378633, 384808, 390984, 397159, 403335, 409510, 415685, 421861, 428036, 434213, 440388, 446564, 452739]]
    攻击次数5 = 1
    数据6 = [int(i*1.128) for i in [0, 26631, 32806, 38982, 45157, 51333, 57508, 63684, 69860, 76035, 82211, 88386, 94562, 100737, 106913, 113088, 119264, 125439, 131615, 137790, 143965, 150141, 156316, 162492, 168667, 174843, 181018, 187194, 193369, 199545, 205720, 211895, 218071, 224246, 230422,
                                  236597, 242773, 248948, 255124, 261299, 267475, 273650, 279825, 286001, 292176, 298352, 304527, 310703, 316878, 323054, 329229, 335405, 341580, 347755, 353931, 360106, 366282, 372457, 378633, 384808, 390984, 397159, 403335, 409510, 415685, 421861, 428036, 434213, 440388, 446564, 452739]]
    攻击次数6 = 1
    CD = 180
    演出时间 = 7.1

    def 等效百分比(self, 武器类型):
        return (self.数据1[self.等级] * self.攻击次数1 + self.数据2[self.等级] * self.攻击次数2 + self.数据3[self.等级] * self.攻击次数3 + self.数据4[self.等级] * self.攻击次数4 + self.数据5[self.等级] * self.攻击次数5 + self.数据6[self.等级] * self.攻击次数6) * self.倍率


class 技能22(被动技能):
    名称 = '微型制导'
    所在等级 = 95
    等级上限 = 40
    学习间隔 = 3
    等级精通 = 30
    基础等级 = 4

    def 加成倍率(self, 武器类型):
        if self.等级 == 0:
            return 1.0
        else:
            return round(1.18 + 0.02 * self.等级, 5)


class 技能23(主动技能):
    名称 = '超时空光耀加农炮'
    所在等级 = 95
    等级上限 = 40
    学习间隔 = 2
    等级精通 = 10
    演出时间 = 3
    基础等级 = 6
    CD = 51
    基础 = 6094.8
    成长 = 688.2
    攻击次数 = 6
    基础2 = 17777.6
    成长2 = 2007.4
    攻击次数2 = 4

    # def 等效百分比(self, 武器类型):
    #    return (self.数据1[self.等级]* self.攻击次数1 + self.数据2[self.等级]* self.攻击次数2) * (1 + self.TP成长 * self.TP等级) * self.倍率


class 技能24(主动技能):
    名称 = 'G-X 星尘天穹'
    所在等级 = 100
    等级上限 = 40
    学习间隔 = 5
    等级精通 = 30
    基础等级 = 2
    CD = 290.0
    演出时间 = 6.5
    基础 = 12551.50484
    成长 = 3789.495162
    攻击次数 = 8
    基础2 = 33473
    成长2 = 10105
    攻击次数2 = 7

    def 加成倍率(self, 武器类型):
        return 0.0
    # def 等效百分比(self, 武器类型):
        # return (self.数据1[self.等级]* self.攻击次数1 + self.数据2[self.等级]* self.攻击次数2) * (1 + self.TP成长 * self.TP等级) * self.倍率


class 技能25(主动技能):
    名称 = '空中射击'
    备注 = '(秒伤,TP为基础精通)'
    所在等级 = 15
    等级上限 = 20
    基础等级 = 10

    数据 = [int(i) for i in [0, 102, 104, 106, 108, 110, 112, 114, 116,
                           118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 140]]
    攻击次数 = 1
    CD = 1
    TP成长 = 0.10
    TP上限 = 3

    def 等效CD(self, 武器类型, 输出类型):
        return round(1, 1)

    def 等效百分比(self, 武器类型):
        return self.数据[self.等级] * self.攻击次数 / 0.115 * 1.6 * (1 + self.TP成长 * self.TP等级) * self.倍率


class 技能26(被动技能):
    名称 = '基础精通'
    所在等级 = 1
    倍率 = 1.0
    等级上限 = 200
    基础等级 = 100
    关联技能 = ['空中射击']

    def 加成倍率(self, 武器类型):
        if self.等级 == 0:
            return 1.0
        else:
            return round(self.倍率 * (0.463 + 0.089 * self.等级), 5)


class 技能27(主动技能):
    名称 = 'RX-78追击者'
    所在等级 = 5
    等级上限 = 60
    基础等级 = 50

    数据 = [int(i*1.0) for i in [0, 667, 734, 802, 869, 936, 1003, 1071, 1140, 1207, 1275, 1343, 1410, 1477, 1546, 1613, 1680, 1749, 1817, 1884, 1952, 2020, 2087, 2155, 2222, 2290, 2359, 2426, 2494, 2561, 2629, 2696, 2763,
                               2831, 2898, 2967, 3035, 3102, 3169, 3237, 3305, 3372, 3440, 3509, 3576, 3643, 3712, 3779, 3846, 3915, 3982, 4049, 4117, 4186, 4253, 4320, 4389, 4456, 4523, 4590, 4658]]
    CD = 2.8
    TP成长 = 0.08
    TP上限 = 5
    演出时间 = 0.7

    def 等效百分比(self, 武器类型):
        return self.数据[self.等级] * (1 + self.TP成长 * self.TP等级) * self.倍率


class 技能28(主动技能):
    名称 = 'Ez-8自爆者'
    所在等级 = 15
    等级上限 = 60
    基础等级 = 46

    数据 = [int(i*1.0) for i in [0, 2281, 2512, 2743, 2975, 3206, 3438, 3670, 3901, 4132, 4364, 4595, 4826, 5058, 5289, 5521, 5752, 5984, 6216, 6447, 6678, 6910, 7141, 7372, 7604, 7835, 8066, 8299, 8530, 8761, 8993, 9224,
                               9456, 9687, 9917, 10150, 10380, 10611, 10845, 11075, 11306, 11538, 11769, 12000, 12232, 12463, 12695, 12926, 13158, 13390, 13621, 13852, 14084, 14315, 14546, 14778, 15009, 15240, 15473, 15704, 15935]]
    CD = 6.375
    TP成长 = 0.1
    TP上限 = 5
    演出时间 = 0.6

    def 等效百分比(self, 武器类型):
        return self.数据[self.等级] * (1 + self.TP成长 * self.TP等级) * self.倍率


class 技能29(主动技能):
    名称 = '机械引爆'
    所在等级 = 15
    等级上限 = 20
    基础等级 = 5
    关联技能 = ['RX-78追击者', 'Ez-8自爆者']
    CD = 2.975
    演出时间 = 0.6
    是否有伤害 = 0

    def 加成倍率(self, 武器类型):
        if self.等级 <= 4:
            return round(1.30+0.02*self.等级, 5)
        if self.等级 >= 5:
            return round(1.40, 5)


技能列表 = []
i = 0
while i >= 0:
    try:
        exec('技能列表.append(技能'+str(i)+'())')
        i += 1
    except:
        i = -1

技能序号 = dict()
for i in range(len(技能列表)):
    技能序号[技能列表[i].名称] = i

一觉序号 = 0
二觉序号 = 0
三觉序号 = 0
for i in 技能列表:
    if i.所在等级 == 50:
        一觉序号 = 技能序号[i.名称]
    if i.所在等级 == 85:
        二觉序号 = 技能序号[i.名称]
    if i.所在等级 == 100:
        三觉序号 = 技能序号[i.名称]

护石选项 = ['无']
for i in 技能列表:
    temp = i
    if i.是否有伤害 == 1 and i.是否有护石 == 1 and i.所在等级 <= 70:
        护石选项.append(i.名称)
护石选项.append('GSP猎鹰')
护石选项.append('高压电磁场')

符文选项 = ['无']
for i in 技能列表:
    if i.所在等级 >= 20 and i.所在等级 <= 70 and i.所在等级 != 50 and i.是否有伤害 == 1:
        符文选项.append(i.名称)
符文选项.append('GSP猎鹰')
符文选项.append('高压电磁场')


class 职业角色属性(角色属性):

    实际名称 = '重霄·机械师·女'
    角色 = '神枪手(女)'
    职业 = '机械师'

    武器选项 = ['自动手枪']

    类型选择 = ['魔法百分比']

    类型 = '魔法百分比'
    防具类型 = '布甲'
    防具精通属性 = ['智力']

    主BUFF = 1.850

    远古记忆 = 0

    def __init__(self):
        基础属性输入(self)
        self.技能栏 = deepcopy(技能列表)
        self.技能序号 = deepcopy(技能序号)

    def 被动倍率计算(self):

        if self.装备检查('守护的抉择'):
            if self.护石第一栏 == 'GSP猎鹰':
                self.技能栏[self.技能序号['GSP猎鹰科罗纳形态']].CD *= 0.7
                self.技能栏[self.技能序号['GSP猎鹰科罗纳形态']].倍率 *= 1.55
                self.技能栏[self.技能序号['GSP猎鹰旋雷者形态']].CD *= 0.7
                self.技能栏[self.技能序号['GSP猎鹰旋雷者形态']].倍率 *= 1.55
                self.技能栏[self.技能序号['GSP猎鹰捕食者形态']].CD *= 0.7
                self.技能栏[self.技能序号['GSP猎鹰捕食者形态']].倍率 *= 1.55
            if self.护石第二栏 == 'GSP猎鹰':
                self.技能栏[self.技能序号['GSP猎鹰科罗纳形态']].CD *= 0.75
                self.技能栏[self.技能序号['GSP猎鹰科罗纳形态']].倍率 *= 1.45
                self.技能栏[self.技能序号['GSP猎鹰旋雷者形态']].CD *= 0.75
                self.技能栏[self.技能序号['GSP猎鹰旋雷者形态']].倍率 *= 1.45
                self.技能栏[self.技能序号['GSP猎鹰捕食者形态']].CD *= 0.75
                self.技能栏[self.技能序号['GSP猎鹰捕食者形态']].倍率 *= 1.45

        super().被动倍率计算()
        self.技能栏[self.技能序号['G1科罗纳']].被动倍率 *= 1+self.技能栏[self.技能序号['G2旋雷者']
                                                        ].G系加成倍率()+self.技能栏[self.技能序号['G3捕食者']].G系加成倍率()
        self.技能栏[self.技能序号['G2旋雷者']].被动倍率 *= 1+self.技能栏[self.技能序号['G1科罗纳']
                                                        ].G系加成倍率()+self.技能栏[self.技能序号['G3捕食者']].G系加成倍率()
        self.技能栏[self.技能序号['G3捕食者']].被动倍率 *= 1+self.技能栏[self.技能序号['G1科罗纳']
                                                        ].G系加成倍率()+self.技能栏[self.技能序号['G2旋雷者']].G系加成倍率()
        self.技能栏[self.技能序号['G1磁力弹']].基础 = self.技能栏[self.技能序号['G1科罗纳']].等效百分比(
            self.武器类型)*0.2*1.717*10
        self.技能栏[self.技能序号['G1磁力弹']].被动倍率 = self.技能栏[self.技能序号['G1科罗纳']].被动倍率
        self.技能栏[self.技能序号['G1磁力弹']].等级 = self.技能栏[self.技能序号['G1科罗纳']].等级
        # for i in [17, 18, 19]:
        #self.技能栏[i].等级 = self.技能栏[17].等级
        #self.技能栏[self.技能序号['GSP猎鹰捕食者形态']].等级 = self.技能栏[self.技能序号['GSP猎鹰旋雷者形态']].等级 = self.技能栏[self.技能序号['GSP猎鹰科罗纳形态']].等级


class 重霄·机械师·女(角色窗口):
    def 窗口属性输入(self):
        self.初始属性 = 职业角色属性()
        self.角色属性A = 职业角色属性()
        self.角色属性B = 职业角色属性()
        self.一觉序号 = 一觉序号
        self.二觉序号 = 二觉序号
        self.三觉序号 = 三觉序号
        self.护石选项 = deepcopy(护石选项)
        self.符文选项 = deepcopy(符文选项)

    def 护石类型选项更新(self, x):
        self.护石类型选项[x].clear()
        if self.护石栏[x].currentText() != '无':
            if self.护石栏[x].currentText() != 'GSP猎鹰':
                try:
                    self.护石类型选项[x].addItems(
                        self.初始属性.技能栏[self.初始属性.技能序号[self.护石栏[x].currentText()]].护石选项)
                except:
                    self.护石类型选项[x].addItem('魔界')
                    self.护石栏[x].setCurrentIndex(0)
            else:
                self.护石类型选项[x].addItem('圣痕')
        else:
            self.护石类型选项[x].addItem('魔界')

    def 界面(self):
        super().界面()
        self.一觉减CD开关 = QCheckBox('ฅ一觉减CD Buffღ', self.main_frame2)
        self.一觉减CD开关.setChecked(False)
        self.一觉减CD开关.resize(120, 20)
        self.一觉减CD开关.move(325, 400)
        self.一觉减CD开关.setStyleSheet(复选框样式)

        self.职业存档.append(('一觉减CD开关', self.一觉减CD开关, 0))

    def 输入属性(self, 属性, x=0):
        super().输入属性(属性, x)
        if self.一觉减CD开关.isChecked():
            属性.技能栏[属性.技能序号['G0战争领主']].一觉减CD = 0.1

    def 加载护石(self, 属性):
        for k in range(3):
            if self.护石栏[k].currentText() != '无' and self.护石栏[k].currentText() != 'GSP猎鹰':
                try:
                    属性.技能栏[self.角色属性A.技能序号[self.护石栏[k].currentText()]].装备护石()
                except:
                    属性.技能栏[self.角色属性A.技能序号[self.护石栏[k].currentText()]].装备护石(
                        self.护石类型选项[k].currentIndex())
            elif self.护石栏[k].currentText() == 'GSP猎鹰':
                属性.技能栏[self.角色属性A.技能序号['GSP猎鹰科罗纳形态']].装备护石(0)
                属性.技能栏[self.角色属性A.技能序号['GSP猎鹰旋雷者形态']].装备护石(0)
                属性.技能栏[self.角色属性A.技能序号['GSP猎鹰捕食者形态']].装备护石(0)

        属性.护石第一栏 = self.护石栏[0].currentText()
        属性.护石第二栏 = self.护石栏[1].currentText()
        属性.护石第三栏 = self.护石栏[2].currentText()

        for i in range(9):
            if self.符文[i].currentText() != '无' and self.符文效果[i].currentText() != '无' and self.符文[i].currentText() != 'GSP猎鹰':
                for j in self.符文效果[i].currentText().split(','):
                    if '攻击' in j:
                        属性.技能栏[self.角色属性A.技能序号[self.符文[i].currentText()]].倍率 *= 1 + int(
                            j.replace('攻击', '').replace('%', '')) / 100
                    if 'CD' in j:
                        属性.技能栏[self.角色属性A.技能序号[self.符文[i].currentText()]].CD *= 1 + int(
                            j.replace('CD', '').replace('%', '')) / 100
            elif self.符文[i].currentText() == 'GSP猎鹰':
                for j in self.符文效果[i].currentText().split(','):
                    if '攻击' in j:
                        属性.技能栏[self.角色属性A.技能序号['GSP猎鹰捕食者形态']].倍率 *= 1 + \
                            int(j.replace('攻击', '').replace('%', '')) / 100
                        属性.技能栏[self.角色属性A.技能序号['GSP猎鹰旋雷者形态']].倍率 *= 1 + \
                            int(j.replace('攻击', '').replace('%', '')) / 100
                        属性.技能栏[self.角色属性A.技能序号['GSP猎鹰科罗纳形态']].倍率 *= 1 + \
                            int(j.replace('攻击', '').replace('%', '')) / 100
                    if 'CD' in j:
                        属性.技能栏[self.角色属性A.技能序号['GSP猎鹰捕食者形态']].CD *= 1 + \
                            int(j.replace('CD', '').replace('%', '')) / 100
                        属性.技能栏[self.角色属性A.技能序号['GSP猎鹰旋雷者形态']].CD *= 1 + \
                            int(j.replace('CD', '').replace('%', '')) / 100
                        属性.技能栏[self.角色属性A.技能序号['GSP猎鹰科罗纳形态']].CD *= 1 + \
                            int(j.replace('CD', '').replace('%', '')) / 100
